package com.wangsd.web.coupon.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.persistence.*;
import java.util.Date;

/**
 * 微信授权实体类
 */
@Data
@Entity
@Table(name = "wx_component_auth")
@ApiModel(value = "微信授权实体类", description = "微信授权实体类")
public class WxComponentAuth {

    /**
     * 以下是通用字段
     */
    @ApiModelProperty(value = "id")
    @Id
    @TableId(type = IdType.AUTO)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private Date createdTime;

    @ApiModelProperty(value = "修改时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updatedTime;

    @TableLogic
    @TableField(fill = FieldFill.INSERT)
    private Integer deleted;

    //授权方appid
    @ApiModelProperty(value = "授权方appid")
    private String authorizerAppid;

    //授权方接口调用凭据（在授权的公众号或小程序具备API权限时，才有此返回值），也简称为令牌
    @ApiModelProperty(value = "authorizer_access_token")
    @Column(name = "authorizer_access_token", length = 300)
    private String authorizerAccessToken;

    //接口调用凭据刷新令牌,刷新令牌主要用于第三方平台获取和刷新已授权用户的access_token，只会在授权时刻提供，请妥善保存。
    // 一旦丢失，只能让用户重新授权，才能再次拿到新的刷新令牌
    @ApiModelProperty(value = "authorizer_refresh_token")
    @Column(name = "authorizer_refresh_token", length = 300)
    private String authorizerRefreshToken;

    //公众号授权给开发者的权限集列表，ID为1到15时分别代表： 1.消息管理权限 2.用户管理权限 3.帐号服务权限 4.网页服务权限 5.微信小店权限
    // 6.微信多客服权限 7.群发与通知权限 8.微信卡券权限 9.微信扫一扫权限 10.微信连WIFI权限 11.素材管理权限 12.微信摇周边权限 13.微信门店权限
    // 14.微信支付权限 15.自定义菜单权限 请注意： 1）该字段的返回不会考虑公众号是否具备该权限集的权限（因为可能部分具备），
    // 请根据公众号的帐号类型和认证情况，来判断公众号的接口权限。
    @ApiModelProperty(value = "funcInfo")
    @Lob
    @Column(name = "func_info", columnDefinition = "text")
    private String funcInfo;

    /** ----------------------------------------------------------- */

    //授权方昵称
    @ApiModelProperty(value = "授权方昵称")
    private String nickName;

    //授权方头像
    @ApiModelProperty(value = "授权方头像")
    @Column(name = "head_img", length = 500)
    private String headImg;

    //授权方公众号类型，0代表订阅号，1代表由历史老帐号升级后的订阅号，2代表服务号
    @ApiModelProperty(value = "服务商类型信息")
    private Integer serviceTypeInfo;

    //授权方认证类型，-1代表未认证，0代表微信认证，1代表新浪微博认证，2代表腾讯微博认证，3代表已资质认证通过但还未通过名称认证，
    // 4代表已资质认证通过、还未通过名称认证，但通过了新浪微博认证，5代表已资质认证通过、还未通过名称认证，但通过了腾讯微博认证
    @ApiModelProperty(value = "验证类型信息")
    private Integer verifyTypeInfo;

    @ApiModelProperty(value = "授权方公众号的原始ID")
    private String userName;

    @ApiModelProperty(value = "公众号的主体名称")
    private String principalName;

    //授权方公众号所设置的微信号
    @ApiModelProperty(value = "授权方公众号所设置的微信号")
    private String alias;

    @ApiModelProperty(value = "二维码图片的URL")
    @Column(name = "qrcode_url", length = 300)
    private String qrcodeUrl;

    //用以了解以下功能的开通状况（0代表未开通，1代表已开通）： open_store:是否开通微信门店功能
    // open_scan:是否开通微信扫商品功能 open_pay:是否开通微信支付功能 open_card:是否开通微信卡券功能 open_shake:是否开通微信摇一摇功能
    @ApiModelProperty(value = "服务信息")
    private String businessInfo;

    @ApiModelProperty(value = "服务商id")
    private Long businessServiceId;

    @ApiModelProperty(value = "0已授权，1用户取消授权")
    @Column(name = "state",columnDefinition = "int(1) default 0 not null")
    private Integer state;
}
